// @flow
import type { TurboModule } from 'react-native/Libraries/TurboModule/RCTExport';
import { TurboModuleRegistry } from 'react-native';

/// Text input interface
export interface Spec extends TurboModule {
    /**
     * Insert text data interface
     * text: Text data to be inserted
     * textStyle: Style of the inserted text data, defined as follows:
     * {
     *       // Font size
     *       "fontSize": "int",
     *      // Font path
     *     "fontPath": "string",
     *     // Drawing start X coordinate
     *     "rectX": "int",
     *       // Drawing area Y coordinate
     *       "rectY": "int",
     *       // Drawing width
     *       "rectWidth": "int",
     *       // Set text color (0-255 black to white, 0 is black)
     *       "txtColor": "int",
     *       // Set text font type 0: Regular 1: Bold 2: Sans-serif Regular 
     *       // 3: Serif Regular 4: Monospace Regular
     *       "textTypeface": "int",
     *       // Set spacing between characters. Default value 0
     *       "letterSpacing": "float",
     *       // Extra line spacing. Default value 0
     *       "lineSpacingExtra": "float",
     *       // Default 1.0F, line height multiplier
     *       "lineSpacingMultiplier": "float",
     *       // Set text alignment, can be 0:Left 1:Center 2:Right
     *       "textAlgin": "int",
     *       // Enable anti-aliasing effect for smoother text rendering. 0:Off 1:On
     *       "textAntiAlias": "int",
     *       // Enable fake bold. If font doesn't support bold,
     *       // can simulate bold effect. 0:Off 1:On
     *       "textFakeBold": "int",
     *       // Set text skew degree. Negative values skew right, positive values skew left
     *       // Recommended values -0.25 ~ -0.35
     *       "textSkewX": "float",
     *       // Set border width. Must be greater than 0, otherwise defaults to 2
     *       "textFrameWidth": "int",
     *       // Border style 0:Fill 1:Border 2:Fill+Border Others:No fill, no border
     *       "textFrameStyle": "int",
     *       // Set border color (0-255 black to white, 0 is black)
     *       "textFrameStrokeColor": "int",
     *       // Set fill color (0-255 black to white, 0 is black)
     *       "textFrameFillColor": "int"
     *   }
     */
    insertText(text:string,textStyle: Object): Promise<boolean>;

    /** 
     * Get current editing text data, content as follows:
     * {
     *   // Text content
     *   "text":"string",
     *   // Text style data
     *   "style":{
     *       // Font size
     *       "fontSize": "int",
     *       // Font path
     *       "fontPath": "string",
     *       // Drawing start X coordinate
     *       "rectX": "int",
     *       // Drawing area Y coordinate
     *       "rectY": "int",
     *       // Drawing width
     *       "rectWidth": "int",
     *       // Set text color (0-255 black to white, 0 is black)
     *       "txtColor": "int",
     *       // Set text font type 0: Regular 1: Bold 2: Sans-serif Regular 
     *       // 3: Serif Regular 4: Monospace Regular
     *       "textTypeface": "int",
     *       // Set spacing between characters. Default value 0
     *       "letterSpacing": "float",
     *       // Extra line spacing. Default value 0
     *       "lineSpacingExtra": "float",
     *       // Default 1.0F, line height multiplier
     *       "lineSpacingMultiplier": "float",
     *       // Set text alignment, can be 0:Left 1:Center 2:Right
     *       "textAlgin": "int",
     *       // Enable anti-aliasing effect for smoother text rendering. 0:Off 1:On
     *       "textAntiAlias": "int",
     *       // Enable fake bold. If font doesn't support bold,
     *       // can simulate bold effect. 0:Off 1:On
     *       "textFakeBold": "int",
     *       // Set text skew degree. Negative values skew right, positive values skew left
     *       // Recommended values -0.25 ~ -0.35
     *       "textSkewX": "float",
     *       // Set border width. Must be greater than 0, otherwise defaults to 2
     *       "textFrameWidth": "int",
     *       // Border style 0:Fill 1:Border 2:Fill+Border Others:No fill, no border
     *       "textFrameStyle": "int",
     *       // Set border color (0-255 black to white, 0 is black)
     *       "textFrameStrokeColor": "int",
     *       // Set fill color (0-255 black to white, 0 is black)
     *       "textFrameFillColor": "int"
     *   }
     * }
     */
    getCurrentEditText(): Promise<Object>;
}
export default (TurboModuleRegistry.get < Spec > (
    'NoteText'
):?Spec);